package cn.itsource.hrm.util;

import cn.itsource.hrm.exception.GlobalException;
import org.springframework.util.StringUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

//参数校验的工具
public class ValidUtils {

    public static final String REGEXP_PHONE_CHINA = "^((13[0-9])|(15[^4])|(18[0,2,3,5-9])|(17[0-8])|(147))\\d{8}$";
    public static final String REGEXP_PHONE_CHINA_HK = "^(5|6|8|9)\\d{7}$";
    public static final String REGEXP_EMAIL = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";

    /** 
     * 大陆号码或香港号码均可 
     */  
    public static boolean isEmail(String str)throws PatternSyntaxException {
        Pattern p = Pattern.compile(REGEXP_EMAIL);
        Matcher m = p.matcher(str);
        return m.matches();
    }  
    /**
     * 大陆号码或香港号码均可
     */
    public static boolean isPhone(String str)throws PatternSyntaxException {
        return isChinaPhoneLegal(str) || isHKPhoneLegal(str);
    }

    /** 
     * 大陆手机号码11位数，匹配格式：前三位固定格式+后8位任意数 
     * 此方法中前三位格式有： 
     * 13+任意数 
     * 15+除4的任意数 
     * 18+除1和4的任意数 
     * 17+除9的任意数 
     * 147 
     */  
    public static boolean isChinaPhoneLegal(String str) throws PatternSyntaxException {  
        Pattern p = Pattern.compile(REGEXP_PHONE_CHINA);
        Matcher m = p.matcher(str);
        return m.matches();  
    }  
  
    /** 
     * 香港手机号码8位数，5|6|8|9开头+7位任意数 
     */  
    public static boolean isHKPhoneLegal(String str)throws PatternSyntaxException {  
        Pattern p = Pattern.compile(REGEXP_PHONE_CHINA_HK);
        Matcher m = p.matcher(str);  
        return m.matches();  
    }
    //断言 判断一个对象或者字符串不为空，如果为空或者空字符串，抛出异常
    public static void isNotNull(Object str,String message){
        if(str==null){
            throw new GlobalException(message);
        }
        if(str instanceof String && StringUtils.isEmpty(str)){
            throw new GlobalException(message);
        }
    }
    //判断一个对象为空，不为空抛出异常
    public static void isNull(Object o,String message){
        if(o!=null){
            throw new GlobalException(message);
        }
    }
    //判断邮箱
    public static void isEmail(String email,String message){
        if(!isEmail(email)){
            throw new GlobalException(message);
        }
    }
    //判断电话
    public static void isPhone(String phone,String message){
        if(!isPhone(phone)){
            throw new GlobalException(message);
        }
    }
    //判断课程上下线状态
    public static void isEquals(int a,int b,String message){
        if(a!=b){
            throw new GlobalException(message);
        }

    }
    //判断为true
    public static void isTrue(boolean success, String message) {
        if(!success){
            throw new GlobalException(message);
        }
    }
}